package demo05.FactoryPattern.store;

import demo05.FactoryPattern.Factory.ChicagoPizzaIngredientFactory;
import demo05.FactoryPattern.FactoryImp.PizzaIngredientFactory;
import demo05.FactoryPattern.pizza.CheesePizza;
import demo05.FactoryPattern.pizza.ClamPizza;
import demo05.FactoryPattern.pizza.PepperoniPizza;
import demo05.FactoryPattern.pizza.VeggiePizza;
import demo05.FactoryPattern.pizzaImp.Pizza;
import demo05.FactoryPattern.storeImp.PizzaStore;


/**
 * 依赖倒置原则。
 * 设计原则：要依赖抽象而不要依赖具体类
 * 原则：
 * 1变量不可以持有类的具体引用。
 * 2不要让类派生自具体的类。
 * 3不要覆盖基类中实现的方法。
 * */
public class ChicagoPizzaStore extends PizzaStore{
	//工厂方法
	protected Pizza createPizza(String item) {
		Pizza pizza = null;
		
		PizzaIngredientFactory ingredientFactory =
		new ChicagoPizzaIngredientFactory();

		if (item.equals("cheese")) {

			pizza = new CheesePizza(ingredientFactory);
			pizza.setName("芝加哥式奶酪比萨");

		} else if (item.equals("veggie")) {

			pizza = new VeggiePizza(ingredientFactory);
			pizza.setName("芝加哥风格蔬菜比萨");

		} else if (item.equals("clam")) {

			pizza = new ClamPizza(ingredientFactory);
			pizza.setName("芝加哥蛤蜊比萨");

		} else if (item.equals("pepperoni")) {

			pizza = new PepperoniPizza(ingredientFactory);
			pizza.setName("芝加哥风格的意大利辣味香肠比萨");

		}
		return pizza;
	}
}
